package model;

import java.util.ArrayList;
import java.util.Collection;

/**
 * Classe que mantém todas as informações da MT.
 * @author lucasamaral
 * @author fernando
 */
public class MaquinaTuring {

  private Collection<String> estados = new ArrayList<String>();
  private Collection<String> alfabetoEntrada = new ArrayList<String>();
  private Collection<String> alfabetoFita = new ArrayList<String>();
  private Collection<String[]> casosDeTeste = new ArrayList<String[]>();
  private String tipoMaquina;
  public static final String TIPO_RECONHECEDORA_LINGUAGEM = "R";
  public static final String TIPO_PROCESSADORA_FUNCAO = "P";

  /**
   *  Método get para o Atributo Estados.
   * @return Retorna uma Collection do tipo String.
   */
  public Collection<String> getEstados() {
    return estados;
  }

  /**
   * Método set para o Atributo Estados.
   * @param estados Recebe uma Collection do tipo String.
   */
  public void setEstados(Collection<String> estados) {
    this.estados = estados;
  }

  /**
   * Método get para o Atributo AlfabetoEntrada.
   * @return Retorna uma Collection do tipo String.
   */
  public Collection<String> getAlfabetoEntrada() {
    return alfabetoEntrada;
  }

  /**
   * Método set para o Atributo AlfabetoEntrada.
   * @param alfabetoEntrada Recebe uma Collection do tipo String.
   */
  public void setAlfabetoEntrada(Collection<String> alfabetoEntrada) {
    this.alfabetoEntrada = alfabetoEntrada;
  }

  /**
   * Método get para o Atributo AlfabetoFita.
   * @return Retorna uma Collection do tipo String.
   */
  public Collection<String> getAlfabetoFita() {
    return alfabetoFita;
  }

  /**
   * Método set para o Atributo AlfabetoFita.
   * @param alfabetoFita Recebe uma Collection do tipo String.
   */
  public void setAlfabetoFita(Collection<String> alfabetoFita) {
    this.alfabetoFita = alfabetoFita;
  }

  /**
   * Método get para o Atributo TipoMaquina.
   * @return Retorna uma String.
   */
  public String getTipoMaquina() {
    return tipoMaquina;
  }

  /**
   * Método set para o Atributo TipoMaquina.
   * @param tipoMaquina Recebe uma String.
   */
  public void setTipoMaquina(String tipoMaquina) {
    this.tipoMaquina = tipoMaquina;
  }

  /**
   * Método get para o Atributo CasosDeTeste.
   * @return Retorna uma Collection do tipo String.
   */
  public Collection<String[]> getCasosDeTeste() {
    return casosDeTeste;
  }

  /**
   * Método set para o Atributo CasosDeTeste.
   * @param casosDeTeste Recebe uma Collection do tipo String.
   */
  public void setCasosDeTeste(Collection<String[]> casosDeTeste) {
    this.casosDeTeste = casosDeTeste;
  }
}
